package net.dgg.dggcloud.service.iboss.service.sc;

import net.dgg.dggcloud.service.common.base.SessionManager;
import net.dgg.dggcloud.service.common.base.service.BaseService;
import net.dgg.dggcloud.service.entity.org.OrganizationEntity;
import net.dgg.dggcloud.service.entity.user.User;
import net.dgg.dggcloud.service.iboss.dao.sc.BackstageSubmenuDao;
import net.dgg.dggcloud.service.iboss.entity.ScAutoAllotOrgConfig;
import net.dgg.dggcloud.service.iboss.utils.DataWrap;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author 孙上峰
 * @ClassName <BackstageSubmenuService>
 * @despriction
 * @create 2018/07/02 11:13
 **/
@Service
public class BackstageSubmenuService extends BaseService {
    @Autowired
    private BackstageSubmenuDao backstageSubmenuDao;

    public List<Map> listBackstageSubmenuByMap(Map map) {
        return backstageSubmenuDao.listBackstageSubmenuByMap(map);
    }

    public Integer countBackstageSubmenuByMap(Map map) {
        return backstageSubmenuDao.countBackstageSubmenuByMap(map);
    }

    /**
     * 开启或关闭自动分单
     *
     * @param id
     */
    public void updateDebugCall(String id) {
        User user = SessionManager.getCurrentUser();
        Assert.notNull(user, "当前用户获取失败，请刷新重新登录！");
        ScAutoAllotOrgConfig scAutoAllotOrgConfig = (ScAutoAllotOrgConfig) this.repository.getSession().createCriteria(ScAutoAllotOrgConfig.class).add(Restrictions.eq("id", Long.valueOf(id))).uniqueResult();
        Assert.notNull(scAutoAllotOrgConfig, "获取信息失败！");
        scAutoAllotOrgConfig.setDebugCall(scAutoAllotOrgConfig.getDebugCall() == 1 ? 2 : 1);
        DataWrap.updateWraps(scAutoAllotOrgConfig);
        this.repository.saveOrUpdate(scAutoAllotOrgConfig);
    }

    /**
     * 新增事业部
     *
     * @param orgId
     */
    public void addBusinessUnit(String orgId) {
        User user = SessionManager.getCurrentUser();
        Assert.notNull(user, "当前用户获取失败，请刷新重新登录！");
        OrganizationEntity organizationEntity = this.repository.get(OrganizationEntity.class, Long.parseLong(orgId));
        Assert.notNull(organizationEntity, "当前事业部获取失败");
        List<ScAutoAllotOrgConfig> scAutoAllotOrgConfigs = (List<ScAutoAllotOrgConfig>) this.repository.getSession().createCriteria(ScAutoAllotOrgConfig.class).add(Restrictions.eq("id", Long.valueOf(orgId))).list();
        Assert.isTrue(scAutoAllotOrgConfigs.size() == 0, "不能新增已有的事业部,请重新选择！");

        ScAutoAllotOrgConfig scAutoAllotOrgConfig = new ScAutoAllotOrgConfig();
        ScAutoAllotOrgConfig scAutoAllotOrgConfig1 = new ScAutoAllotOrgConfig();

        scAutoAllotOrgConfig.setOrganizationId(organizationEntity.getId());
        scAutoAllotOrgConfig.setOrganizationName(organizationEntity.getName());
        scAutoAllotOrgConfig.setBtCode("BUS_YT_XYDK");
        scAutoAllotOrgConfig.setBigTurn(4);
        scAutoAllotOrgConfig.setSmallTurn("A");
        scAutoAllotOrgConfig.setTurnCount(0L);
        scAutoAllotOrgConfig.setDebugCall(2);
        scAutoAllotOrgConfig.setUpdaterId(user.getId());
        scAutoAllotOrgConfig.setUpdaterName(user.getName().concat("(").concat(user.getLoginName()).concat(")"));
        scAutoAllotOrgConfig.setUpdateTime(new Date());
        scAutoAllotOrgConfig.setId(keyWorker.nextId());

        scAutoAllotOrgConfig1.setOrganizationId(organizationEntity.getId());
        scAutoAllotOrgConfig1.setOrganizationName(organizationEntity.getName());
        scAutoAllotOrgConfig1.setBtCode("BUS_YT_DYDK");
        scAutoAllotOrgConfig1.setBigTurn(4);
        scAutoAllotOrgConfig1.setSmallTurn("A");
        scAutoAllotOrgConfig1.setTurnCount(0L);
        scAutoAllotOrgConfig1.setDebugCall(2);
        scAutoAllotOrgConfig1.setUpdaterId(user.getId());
        scAutoAllotOrgConfig1.setUpdaterName(user.getName().concat("(").concat(user.getLoginName()).concat(")"));
        scAutoAllotOrgConfig1.setUpdateTime(new Date());
        scAutoAllotOrgConfig1.setId(keyWorker.nextId());
        DataWrap.saveWrap(scAutoAllotOrgConfig);
        DataWrap.saveWrap(scAutoAllotOrgConfig1);

        this.repository.save(scAutoAllotOrgConfig);
        this.repository.save(scAutoAllotOrgConfig1);
    }
}
